#ifndef PAGE_H_
#define PAGE_H_

#include "Logger.hpp"
#include "Random.hpp"
#include "Street.hpp"
#include "Highrise.hpp"
#include "ShaderLibrary.hpp"
#include "Shader.hpp"
#include "DeferredLight.hpp"
#include <list>
#include <string>
#include <iostream>
#include <cassert>

class Element;
class DeferredLight;

class Page
{
public:
	Page();
	
	/// Full draw pass
	void draw();
	
	/// Simplified drawing for fast low quality render
	void drawSimple();
	
	/// Draw the shadow pass for this page
	void drawShadow();
	
	/// Draw the lighting volumes used in deferred lighting
	void drawLightVolumes();
	
	void generate();
	
	const std::list<DeferredLight*> getLights() const { return lights; }
	
protected:
	std::list<Element*> proceduralElements;
	std::list<DeferredLight*> lights;
	
	int seed;
};

#endif

